// 导入数据库操作模块
const db = require('../db/index.js')

// 获取文章分类列表数据的处理函数
exports.getArticleCates = (req, res) => {
	// 根据分类的状态，获取所有未被删除的分类列表数据
	const sql = 'select * from ev_article_cate where is_delete=0 order by id ASC'
	db.query(sql, req.user.is_delete, (err, result) => {
		// sql执行失败
		if (err) return res.handleSend(err)
		// 因为是获取列表数据 不需要进行下一步判断
		res.send({
			status: 0,
			message: '获取文章分类列表数据成功',
			data: result
		})
	})
}

// 新增文章分类
exports.addcates = (req, res) => {
	// 定义查询 分类名称 与 分类别名 是否被占用的 SQL 语句
	const sql = 'select * from ev_article_cate where name=? or alias=?'
	// console.log(req.body);
	db.query(sql, [req.body.name, req.body.alias], (err, results) => {
		// sql执行失败
		if (err) return res.handleSend(err)
		// 分类名称 和 分类别名 都被占用
		if (results.length === 2) return res.handleSend('分类名称与别名被占用，请更换后重试！')
		// results.length === 1 有三种情况
		if (results.length === 1 && results[0].name === req.body.name && results[0].alias === req.body.alias) return res.handleSend('分类名称与别名被占用，请更换后重试！')
		// 分类名称 或 分类别名 被占用
		if (results.length === 1 && results[0].name === req.body.name) return res.handleSend('分类名称被占用，请更换后重试！')
		if (results.length === 1 && results[0].alias === req.body.alias) return res.handleSend('分类别名被占用，请更换后重试！')
		
		// TODO...可用状态
		// 定义新增文章分类的 SQL 语句
		const sql = 'insert into ev_article_cate(name,alias) value(?,?)'
		
		db.query(sql,[req.body.name, req.body.alias],(err,results)=>{
			// sql执行失败
			if (err) return res.handleSend(err)
			// SQL 语句执行成功，但是影响行数不等于 1
			if (results.affectedRows !== 1) return res.handleSend('新增文章分类失败！')
			res.handleSend('新增文章成功',0)
		})
	})
}

// 删除文章分类
exports.deleteCateById = (req,res)=>{
	// 定义删除文章分类的 SQL 语句
	const sql = 'update ev_article_cate set is_delete=1 where id=?'
	db.query(sql , req.params.id , (err,result)=>{
		// 执行sql语句失败
		if(err) return res.handleSend(err)
		// 更新数据不为1
		if(result.affectedRows !== 1 ) return res.handleSend('删除文章失败')
		res.handleSend('删除文章分类成功', 0)
	})
}

// 根据 Id 获取文章分类数据
exports.getCatesById = (req,res)=>{
	// 定义 根据 Id 获取文章分类数据的 SQL 语句
	const sql = 'select * from ev_article_cate where id=?'
	db.query(sql , req.params.id , (err,result)=>{
		// 执行sql语句失败
		if(err) return res.handleSend(err)
		// 更新数据不为1
		if(result.length !== 1 ) return res.handleSend('获取文章分类数据失败')
		res.send({
			status:0,
			message:'获取文章分类数据成功',
			data:result
		})
	})
}


// 根据 Id 更新文章分类数据
exports.updatecate = (req,res)=>{
	// 定义查询 分类名称 与 分类别名 是否被占用的 SQL 语句
	const sql = `select * from ev_article_cate where Id<>? and (name=? or alias=?)`
	
	// 执行查重操作
	db.query(sql, [req.body.Id, req.body.name, req.body.alias], (err, results) => {
	  // 执行 SQL 语句失败
	  if (err) return res.handleSend(err)
	
	  // 分类名称 和 分类别名 都被占用
	  if (results.length === 2) return res.handleSend('分类名称与别名被占用，请更换后重试！')
	  if (results.length === 1 && results[0].name === req.body.name && results[0].alias === req.body.alias) return res.handleSend('分类名称与别名被占用，请更换后重试！')
	  // 分类名称 或 分类别名 被占用
	  if (results.length === 1 && results[0].name === req.body.name) return res.handleSend('分类名称被占用，请更换后重试！')
	  if (results.length === 1 && results[0].alias === req.body.alias) return res.handleSend('分类别名被占用，请更换后重试！')
	
	  // TODO：更新文章分类
	  // 定义更新文章分类的 SQL 语句
	  const sql = 'update ev_article_cate set ? where Id=?'
	  db.query(sql , [req.body , req.body.Id] , (err,result)=>{
		   // 执行 SQL 语句失败
		    if (err) return res.handleSend(err)
		  
		    // SQL 语句执行成功，但是影响行数不等于 1
		    if (result.affectedRows !== 1) return res.handleSend('更新文章分类失败！')
		  
		    // 更新文章分类成功
		    res.handleSend('更新文章分类成功！', 0)
	  })
	})


}